import Request from './request'
import appConfig from '@/config.js'
// import jwx from './modules/jwx'
var token;
const http = new Request()

http.setConfig((config) => {
	/* 设置全局配置 */
	// var token = uni.getStorageSync("token")

	console.log("token", uni.getStorageSync("token"))
	config.baseUrl = appConfig.baseUrl /* 根域名不同 */
	config.header = {
		// Authorization: "Bearer " + uni.getStorageSync("token"),
		...config.header,
		// 'X-Auth-Token': user && user.userInfo && user.userInfo.token ? user.userInfo.token : ''
	}

	return config
})

/**
 * 自定义验证器，如果返回true 则进入响应拦截器的响应成功函数(resolve)，否则进入响应拦截器的响应错误函数(reject)
 * @param { Number } statusCode - 请求响应体statusCode（只读）
 * @return { Boolean } 如果为true,则 resolve, 否则 reject
 */
http.validateStatus = (statusCode) => {
	return statusCode === 200
}

http.interceptor.request((config, cancel) => {
	if (uni.getStorageSync("token")) {
		var myToken = "Bearer " + uni.getStorageSync("token")
	}
	/* 请求之前拦截器 */
	var user = uni.getStorageSync("user")
	config.baseUrl = appConfig.baseUrl /* 根域名不同 */
	config.header = {
		Authorization: myToken,
		...config.header,

		// 'X-Auth-Token': user && user.userInfo && user.userInfo.token ? user.userInfo.token : ''
	}
	/*
	if (!token) { // 如果token不存在，调用cancel 会取消本次请求，但是该函数的catch() 仍会执行
	  cancel('token 不存在') // 接收一个参数，会传给catch((err) => {}) err.errMsg === 'token 不存在'
	}
	*/
	return config
})

http.interceptor.response((response) => {
	if (response.data.code == 401) {
		uni.navigateTo({
			url: "/pages/index/login"
		})

	}
	/* 请求之后拦截器 */
	if (response.statusCode == 200) { // 服务端返回的状态码不等于200，则reject()
		switch (response.data.status || response.data.code) {
			case 0:
			case 200:
			case 9001:
				return response.data;
			case 9000:
				uni.showToast({
					title: response.data.msg,
					duration: 2000,
					icon: "none"
				});
				return Promise.reject(response.data);
			default:
				return Promise.reject(response)


		}
		// if (response.data.code !== 0 && response.data.code !==9001) {
		// 	return Promise.reject(response)
		// }
	}
	return response.data
}, (response) => { // 请求错误做点什么
	return response
})

export {
	http
}